GETFOLDERDIALOG
===============

COMPILE GETFOLDERDIALOG WITH VISUAL STUDIO
==========================================

Author: Davros
Date:   2020-09-06

SOFTWARE USED
=============
* Windows 10
* Visual Studio Community 2017
* DLL Export viewer
* Dumpbin

GOAL
====
This document describes the procedure to compile in Visual Studio getfolderdialog.dll (Debug | Release).

CHECK MSVC PROJECT PROPERTIES
=============================
Open Solution 'c:\GetFolderDialog\getfolderdialog\getfolderdialog.sln'.

In Project Properties - Property Pages of project getfolderdialog use following configuration (Debug or Release):

Configuration bar
*D Configuration: Debug
*R Configuration: Release
* Platform: Win32

Configuration Properties - General
* Target Extension: .dll
* Platform Toolset: Visual Studio 2017 (v141). This will automatically change following settings:
  * (Target Platform: Windows)
  * Windows SDK Version: 8.1
* Configuration Type: Dynamic Library (.dll)
* Use of MFC: Use Standard Windows Libraries
* Character Set: Use Unicode Character Set
*D Whole Program Optimization: No Whole Program Optimization
*R Whole Program Optimization: Use Link Time Code Generation

Configuration Properties - C/C++ - All Options
* Calling Convention: __stdcall (/Gz)
* Conformance mode: No
* Enable Function-Level Linking: Yes (/Gy)
* Enable Intrinsic Functions: Yes (/Oi)
* Enable Minimal Rebuild: No (/Gm-)
*D Optimization: Disabled (/Od)
*R Optimization: Maximize Speed (/O2)
* Precompiled Header: Not Using Precompiled Headers
*D Preprocessor Definitions: WIN32;_DEBUG;GETFOLDERDIALOG_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
*R Preprocessor Definitions: WIN32;NDEBUG;GETFOLDERDIALOG_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
* SDL checks: Yes (/sdl)
* Warning Level: Level3 (/W3)
*D Whole Program Optimization: No
*R Whole Program Optimization: Yes(/GL)

Configuration Properties - Linker - All Options
* Enable COMDAT Folding: Yes (/OPT:ICF)
* Enable Incremental Linking: No (/INCREMENTAL:NO)
*D Generate Debug Info: Generate Debug Information (/DEBUG)
*R Generate Debug Info: No
* Module Definition File: getfolderdialog.def
* References: Yes (/OPT:REF)
* SubSystem: Windows (/SUBSYSTEM:WINDOWS)

BUILD
=====
* Rebuild project getfolderdialog.

*D Build result is 'c:\GetFolderDialog\getfolderdialog\Debug\getfolderdialog.dll'.
*R Build result is 'c:\GetFolderDialog\getfolderdialog\Release\getfolderdialog.dll'.

Check the exported functions by:
* opening the dll with 'DLL Export viewer', or
*D executing DUMPBIN (in Windows Search box type 'Developer Command Prompt for VS 2017'. Then in command prompt type:
   'dumpbin /exports "c:\GetFolderDialog\getfolderdialog\Debug\getfolderdialog.dll"'.
*R executing DUMPBIN (in Windows Search box type 'Developer Command Prompt for VS 2017'. Then in command prompt type:
   'dumpbin /exports "c:\GetFolderDialog\getfolderdialog\Release\getfolderdialog.dll"'.

*D Copy 'c:\GetFolderDialog\getfolderdialog\Debug\getfolderdialog.dll' to PowerBuilder application directory. NOTE: When PowerBuilder is running, Windows copy may tell that the file was copied whereas in reality it was not because PowerBuilder was locking it. So first close PowerBuilder, then copy the .dll and run 'dumpbin /exports' on the copy to be 100% sure.
*R Copy 'c:\GetFolderDialog\getfolderdialog\Release\getfolderdialog.dll' to PowerBuilder application directory. NOTE: When PowerBuilder is running, Windows copy may tell that the file was copied whereas in reality it was not because PowerBuilder was locking it. So first close PowerBuilder, then copy the .dll and run 'dumpbin /exports' on the copy to be 100% sure.
